home *** CD-ROM | disk | FTP | other *** search
/ Workbench Design / WB Collection.iso / workbench werkzeuge / scherz programme / fortune / source / reqtools.h < prev    next >
C/C++ Source or Header  |  1996-04-07  |  10KB  |  341 lines

  1. #ifndef LIBRARIES_REQTOOLS_H
  2. #define LIBRARIES_REQTOOLS_H
  3. /*
  4. **    $Filename: libraries/reqtools.h $
  5. **    $Release: 1.0 $
  6. **
  7. **    (C) Copyright 1991 Nico François
  8. **        All Rights Reserved
  9. */
  10.  
  11. #ifndef    EXEC_TYPES_H
  12. #include <exec/types.h>
  13. #endif    /* EXEC_TYPES_H */
  14.  
  15. #ifndef    EXEC_LISTS_H
  16. #include <exec/lists.h>
  17. #endif    /* EXEC_LISTS_H */
  18.  
  19. #ifndef    EXEC_LIBRARIES_H
  20. #include <exec/libraries.h>
  21. #endif    /* EXEC_LIBRARIES_H */
  22.  
  23. #ifndef    GRAPHICS_TEXT_H
  24. #include <graphics/text.h>
  25. #endif    /* GRAPHICS_TEXT_H */
  26.  
  27. #ifndef UTILITY_TAGITEM_H
  28. #include <utility/tagitem.h>
  29. #endif    /* UTILITY_TAGITEM_H */
  30.  
  31. #ifndef LIBRARIES_DOS_H
  32. #include <libraries/dos.h>
  33. #endif
  34.  
  35. #define    REQTOOLSNAME         "reqtools.library"
  36. #define    REQTOOLSVERSION         37L
  37.  
  38. struct ReqToolsBase {
  39.    struct Library LibNode;
  40.    UBYTE Flags;
  41.    UBYTE pad[3];
  42.    BPTR SegList;
  43.    /* The following library bases may be read and used by your program */
  44.    struct IntuitionBase *IntuitionBase;
  45.    struct GfxBase *GfxBase;
  46.    struct DosLibrary *DOSBase;
  47.    /* Next two library bases are only (and always) valid on Kickstart 2.0!
  48.       (1.3 version of reqtools also initializes these when run on 2.0) */
  49.    struct Library *GadToolsBase;
  50.    struct Library *UtilityBase;
  51.    };
  52.  
  53. /* types of requesters, for rtAllocRequestA() */
  54. #define RT_FILEREQ         0L
  55. #define RT_REQINFO         1L
  56. #define RT_FONTREQ         2L
  57.  
  58. /***********************
  59. *                      *
  60. *    File requester    *
  61. *                      *
  62. ***********************/
  63.  
  64. /* structure _MUST_ be allocated with rtAllocRequest() */
  65.  
  66. struct rtFileRequester {
  67.    ULONG ReqPos;
  68.    UWORD LeftOffset;
  69.    UWORD TopOffset;
  70.    ULONG Flags;
  71.    struct Hook *Hook;
  72.    char *Dir;                /* READ ONLY! Change with rtChangeReqAttrA()! */
  73.    char *MatchPat;           /* READ ONLY! Change with rtChangeReqAttrA()! */
  74.    struct TextFont *DefaultFont;
  75.    ULONG WaitPointer;
  76.    /* Lots of private data follows! HANDS OFF :-) */
  77.    };
  78.  
  79. /* returned by rtFileRequestA() if multiselect is enabled,
  80.    free list with rtFreeFileList() */
  81.  
  82. struct rtFileList {
  83.    struct rtFileList *Next;
  84.    ULONG StrLen;             /* -1 for directories */
  85.    char *Name;
  86.    };
  87.  
  88. /***********************
  89. *                      *
  90. *    Font requester    *
  91. *                      *
  92. ***********************/
  93.  
  94. /* structure _MUST_ be allocated with rtAllocRequest() */
  95.  
  96. struct rtFontRequester {
  97.    ULONG ReqPos;
  98.    UWORD LeftOffset;
  99.    UWORD TopOffset;
  100.    ULONG Flags;
  101.    struct Hook *Hook;
  102.    struct TextAttr Attr;        /* READ ONLY! */
  103.    struct TextFont *DefaultFont;
  104.    ULONG WaitPointer;
  105.    /* Lots of private data follows! HANDS OFF :-) */
  106.    };
  107.  
  108. /***********************
  109. *                      *
  110. *    Requester Info    *
  111. *                      *
  112. ***********************/
  113.  
  114. /* for rtEZRequestA(), rtGetLongA(), rtGetStringA() and rtPaletteRequestA(),
  115.    _MUST_ be allocated with rtAllocRequest() */
  116.  
  117. struct rtReqInfo {
  118.    ULONG ReqPos;
  119.    UWORD LeftOffset;
  120.    UWORD TopOffset;
  121.    ULONG Width;                   /* not for rtEZRequestA() */
  122.    char *ReqTitle;                /* currently only for rtEZRequestA() */
  123.    ULONG Flags;                   /* only for rtEZRequestA() */
  124.    struct TextFont *DefaultFont;  /* currently only for rtPaletteRequestA() */
  125.    ULONG WaitPointer;
  126.    /* structure may be extended in future */
  127.    };
  128.  
  129. /***********************
  130. *                      *
  131. *     Handler Info     *
  132. *                      *
  133. ***********************/
  134.  
  135. /* for rtReqHandlerA(), will be allocated for you when you use
  136.    the RT_ReqHandler tag, never try to allocate this yourself! */
  137.  
  138. struct rtHandlerInfo {
  139.    ULONG private1;
  140.    ULONG WaitMask;
  141.    ULONG DoNotWait;
  142.    /* Private data follows, HANDS OFF :-) */
  143.    };
  144.  
  145. /* possible return codes from rtReqHandlerA() */
  146.  
  147. #define CALL_HANDLER         (ULONG)0x80000000
  148.  
  149.  
  150. /*************************************
  151. *                                    *
  152. *                TAGS                *
  153. *                                    *
  154. *************************************/
  155.  
  156. #define RT_TagBase         TAG_USER
  157.  
  158. /*** tags understood by most requester functions ***
  159. */
  160. /* optional pointer to window */
  161. #define RT_Window         (RT_TagBase+1)
  162. /* idcmp flags requester should abort on (useful for IDCMP_DISKINSERTED) */
  163. #define RT_IDCMPFlags         (RT_TagBase+2)
  164. /* position of requester window (see below) - default REQPOS_POINTER */
  165. #define RT_ReqPos         (RT_TagBase+3)
  166. /* signal mask to wait for abort signal */
  167. #define RT_LeftOffset         (RT_TagBase+4)
  168. /* topedge offset of requester relative to position specified by RT_ReqPos */
  169. #define RT_TopOffset         (RT_TagBase+5)
  170. /* name of public screen to put requester on (Kickstart 2.0 only!) */
  171. #define RT_PubScrName         (RT_TagBase+6)
  172. /* address of screen to put requester on */
  173. #define RT_Screen         (RT_TagBase+7)
  174. /* tagdata must hold the address of (!) an APTR variable */
  175. #define RT_ReqHandler         (RT_TagBase+8)
  176. /* font to use when screen font is rejected, _MUST_ be fixed-width font!
  177.    (struct TextFont *, not struct TextAttr *!)
  178.    - default GfxBase->DefaultFont */
  179. #define RT_DefaultFont         (RT_TagBase+9)
  180. /* boolean to set the standard wait pointer in window - default FALSE */
  181. #define RT_WaitPointer         (RT_TagBase+10)
  182.  
  183. /*** tags specific to rtEZRequestA ***
  184. */
  185. /* title of requester window - default "Request" or "Information" */
  186. #define RTEZ_ReqTitle         (RT_TagBase+20)
  187. /* (RT_TagBase+21) reserved
  188. /* various flags (see below) */
  189. #define RTEZ_Flags         (RT_TagBase+22)
  190. /* default response (activated by pressing RETURN) - default TRUE */
  191. #define RTEZ_DefaultResponse     (RT_TagBase+23)
  192.  
  193. /*** tags specific to rtGetLongA ***
  194. */
  195. /* minimum allowed value - default MININT */
  196. #define RTGL_Min         (RT_TagBase+30)
  197. /* maximum allowed value - default MAXINT */
  198. #define RTGL_Max         (RT_TagBase+31)
  199. /* suggested width of requester window (in pixels) */
  200. #define RTGL_Width         (RT_TagBase+32)
  201. /* boolean to show the default value - default TRUE */
  202. #define RTGL_ShowDefault     (RT_TagBase+33)
  203.  
  204. /*** tags specific to rtGetStringA ***
  205. */
  206. /* suggested width of requester window (in pixels) */
  207. #define RTGS_Width         RTGL_Width
  208. /* allow empty string to be accepted - default FALSE */
  209. #define RTGS_AllowEmpty         (RT_TagBase+80)
  210.  
  211. /*** tags specific to rtFileRequestA ***
  212. */
  213. /* various flags (see below) */
  214. #define RTFI_Flags         (RT_TagBase+40)
  215. /* suggested height of file requester */
  216. #define RTFI_Height         (RT_TagBase+41)
  217. /* replacement text for 'Ok' gadget (max 6 chars) */
  218. #define RTFI_OkText         (RT_TagBase+42)
  219.  
  220. /*** tags specific to rtFontRequestA ***
  221. */
  222. /* various flags (see below) */
  223. #define RTFO_Flags         RTFI_Flags
  224. /* suggested height of font requester */
  225. #define RTFO_Height         RTFI_Height
  226. /* replacement text for 'Ok' gadget (max 6 chars) */
  227. #define RTFO_OkText         RTFI_OkText
  228. /* suggested height of font sample display - default 24 */
  229. #define RTFO_SampleHeight     (RT_TagBase+60)
  230. /* minimum height of font displayed */
  231. #define RTFO_MinHeight         (RT_TagBase+61)
  232. /* maximum height of font displayed */
  233. #define RTFO_MaxHeight         (RT_TagBase+62)
  234. /* [(RT_TagBase+63) to (RT_TagBase+66) used below] */
  235.  
  236. /*** tags for rtChangeReqAttrA ***
  237. */
  238. /* file requester - set directory */
  239. #define RTFI_Dir         (RT_TagBase+50)
  240. /* file requester - set wildcard pattern */
  241. #define RTFI_MatchPat         (RT_TagBase+51)
  242. /* file requester - add a file or directory to the buffer */
  243. #define RTFI_AddEntry         (RT_TagBase+52)
  244. /* file requester - remove a file or directory from the buffer */
  245. #define RTFI_RemoveEntry     (RT_TagBase+53)
  246. /* font requester - set font name of selected font */
  247. #define RTFO_FontName         (RT_TagBase+63)
  248. /* font requester - set font size */
  249. #define RTFO_FontHeight         (RT_TagBase+64)
  250. /* font requester - set font style */
  251. #define RTFO_FontStyle         (RT_TagBase+65)
  252. /* font requester - set font flags */
  253. #define RTFO_FontFlags         (RT_TagBase+66)
  254.  
  255. /*** tags for rtPaletteRequestA ***
  256. */
  257. /* initially selected color - default 1 */
  258. #define RTPA_Color         (RT_TagBase+70)
  259.  
  260. /*** tags for rtReqHandlerA ***
  261. */
  262. /* end requester by software control, set tagdata to REQ_CANCEL, REQ_OK or
  263.    in case of rtEZRequest to the return value */
  264. #define RTRH_EndRequest         (RT_TagBase+60)
  265.  
  266. /*** tags for rtAllocRequestA ***/
  267. /* no tags defined yet */
  268.  
  269.  
  270. /************
  271. * RT_ReqPos *
  272. ************/
  273. #define REQPOS_POINTER         0L
  274. #define REQPOS_CENTERWIN     1L
  275. #define REQPOS_CENTERSCR     2L
  276. #define REQPOS_TOPLEFTWIN     3L
  277. #define REQPOS_TOPLEFTSCR     4L
  278.  
  279. /******************
  280. * RTRH_EndRequest *
  281. ******************/
  282. #define REQ_CANCEL         0L
  283. #define REQ_OK             1L
  284.  
  285. /***************************************
  286. * flags for RTFI_Flags and RTFO_Flags  *
  287. * or filereq->Flags and fontreq->Flags *
  288. ***************************************/
  289. #define FREQB_NOBUFFER         2L
  290. #define FREQF_NOBUFFER         (1L<<FREQB_NOBUFFER)
  291. #define FREQB_DOWILDFUNC     11L
  292. #define FREQF_DOWILDFUNC     (1L<<FREQB_DOWILDFUNC)
  293.  
  294. /*****************************************
  295. * flags for RTFI_Flags or filereq->Flags *
  296. *****************************************/
  297. #define FREQB_MULTISELECT     0L
  298. #define FREQF_MULTISELECT     (1L<<FREQB_MULTISELECT)
  299. #define FREQB_SAVE         1L
  300. #define FREQF_SAVE         (1L<<FREQB_SAVE)
  301. #define FREQB_NOFILES         3L
  302. #define FREQF_NOFILES         (1L<<FREQB_NOFILES)
  303. #define FREQB_PATGAD         4L
  304. #define FREQF_PATGAD         (1L<<FREQB_PATGAD)
  305. #define FREQB_SELECTDIRS     12L
  306. #define FREQF_SELECTDIRS     (1L<<FREQB_SELECTDIRS)
  307.  
  308. /*****************************************
  309. * flags for RTFO_Flags or fontreq->Flags *
  310. *****************************************/
  311. #define FREQB_FIXEDWIDTH     5L
  312. #define FREQF_FIXEDWIDTH     (1L<<FREQB_FIXEDWIDTH)
  313. #define FREQB_COLORFONTS     6L
  314. #define FREQF_COLORFONTS     (1L<<FREQB_COLORFONTS)
  315. #define FREQB_CHANGEPALETTE     7L
  316. #define FREQF_CHANGEPALETTE     (1L<<FREQB_CHANGEPALETTE)
  317. #define FREQB_LEAVEPALETTE     8L
  318. #define FREQF_LEAVEPALETTE     (1L<<FREQB_LEAVEPALETTE)
  319. #define FREQB_SCALE         9L
  320. #define FREQF_SCALE         (1L<<FREQB_SCALE)
  321. #define FREQB_STYLE         10L
  322. #define FREQF_STYLE         (1L<<FREQB_STYLE)
  323.  
  324. /*****************************************
  325. * flags for RTEZ_Flags or reqinfo->Flags *
  326. *****************************************/
  327. #define EZREQB_NORETURNKEY     0L
  328. #define EZREQF_NORETURNKEY     (1L<<EZREQB_NORETURNKEY)
  329. #define EZREQB_LAMIGAQUAL     1L
  330. #define EZREQF_LAMIGAQUAL     (1L<<EZREQB_LAMIGAQUAL)
  331. #define EZREQB_CENTERTEXT     2L
  332. #define EZREQF_CENTERTEXT     (1L<<EZREQB_CENTERTEXT)
  333.  
  334. /********
  335. * hooks *
  336. ********/
  337. #define REQHOOK_WILDFILE     0L
  338. #define REQHOOK_WILDFONT     1L
  339.  
  340. #endif /* LIBRARIES_REQTOOLS_H */
  341.